#ifndef HARDTOOL_H
#define HARDTOOL_H
#include<thread>
#include<functional>
#include<vector>
#include<string>
#include"mytypes.h"
#include<QSysInfo>
#include<QTextStream>
namespace Yzty
{
    class HardTool
    {

    public:
        static HardTool* GetInstance();
        std::function<void()> getToolFunction(HardToolCode index);
        ~HardTool();
    private:
        HardTool();
        std::vector<cpuInfor>           GetCpuInfor();          //获取cpu信息
        std::vector<biosInfor>          GetBiosInfor();         //获取bios信息
        std::vector<mesoltInfor>        GetMesoltInfor();       //获取内存槽信息
        std::vector<moboInfor>          GetMoboInfor();         //获取主板信息
        std::vector<memoryInfor>        GetMemoryInfor();       //获取内存信息
        std::vector<graphcardInfor>     GetGraphCardInfor();    //声卡信息
        std::vector<networkcardInfor>   GetNetWorkInfor();      //获取网卡信息
        std::vector<mouseInfor>         GetMouseInfor();        //获取鼠标信息
        std::vector<keyboardInfor>      GetKeyBoardInfor();     //获取键盘信息
        std::vector<batteryInfor>       GetBatteyInfor();       //获取电池信息
        std::vector<soundcardInfor>     GetSoundInfor();        //获取声卡信息
        std::vector<diskInfor>          GetdiskInfor();         //获取硬盘信息
        std::vector<bluetoothInfor>     GetbluetoothInfor();    //获取蓝牙信息
        std::vector<osInfor>            GetosInfor();           //获取系统信息
        std::vector<userInfor>          GetUserInfor();         //获取用户信息


    private:
        static QString cpucommand;
        static QString bioscommand;
        static QString mesoltcommand;
        static QString mobocommand;
        static QString memorycommand;
        static QString graphcardcommand;
        static QString graphcardcommand_2;
        static QString graphreslutioncommand;
        static QString networkcommand;
        static QString mousecommand;
        static QString keyboardcommand;
        static QString batterycommand;
        static QString soundcommand;
        static QString diskcommand;
        static QString diskmediumcommand;
        static QString bluetoothcommand;
        static QString oscommand;
        static QString listuser;
        static QString stateuser;
        static QString loginuser;
        static QString userinfocommand;
        static QString userrebootcommand;


    private:
        static HardTool* _instance;
        QString _cpuarch;
        QString _end;
        QString _wordsize;
    };
}

#endif // NORMALTOOL_H
